﻿#define _CRT_SECURE_NO_WARNINGS 1
//#pragma warning(disable:6031)
#include"SeqList.h"
#include"Contact.h"
#include<stdio.h>
#include<string.h>
//通讯录的初始化
void ContactInit(Contact* con)
{
	SLInit(con);
}
void ContactAdd(Contact* con)
{
	//通讯录的添加数据
	peoInfo person1;
	printf("往通讯录添加联系人姓名\n");
	scanf("%s", person1.name);
	printf("往通讯录添加联系人性别\n");
	scanf("%s", person1.gender);
	printf("往通讯录添加联系人年龄\n");
	scanf("%d",&person1.age);
	printf("往通讯录添加联系人电话号码\n");
	scanf("%s", person1.tel);
	printf("往通讯录添加联系人地址\n");
	scanf("%s", person1.addr);
	SLPushBack(con, person1);
}
int FindName(Contact* con, char name[])
{
	for (int i = 0; i < con->size; i++)
	{
		if (0==strcmp(con->arr[i].name, name))
		{
			//找到了
			return i;
		}
	}
	//没找到
	return -1;
}
void ContactDel(Contact* con)
{
	//要删除的数据必须要存在，才能执行删除操作
	//查找
	char name[NAME_MAX];
	printf("请输入要删除的联系人姓名:\n");
	scanf("%s", name);

	int find = FindName(con, name);
	if (find < 0)
	{
		printf("要删除的联系人数据不存在！\n");
		return;
	}
	//要删除的联系人数据存在--->知道了要删除的联系人数据对应的下标
	SLDelete(con, find);
	printf("删除成功！\n");
}
//通讯录的修改
void ContactModify(Contact* con)
{
	//先找到要修改的值，且值要存在
	char name[NAME_MAX];
	printf("请输入要修改的联系人姓名:\n");
	scanf("%s", name);
	int find = FindName(con, name);
	if (find < 0)
	{
		printf("要删除的联系人数据不存在！\n");
		return;
	}
	printf("请输入新的姓名：\n");
	scanf("%s",con->arr[find].name);
	printf("往通讯录修改联系人性别\n");
	scanf("%s", con->arr[find].gender);
	printf("往通讯录修改联系人年龄\n");
	scanf("%d",&con->arr[find].age);
	printf("往通讯录修改联系人电话号码\n");
	scanf("%s",con->arr[find].tel );
	printf("往通讯录修改联系人地址\n");
	scanf("%s",con->arr[find].addr);
}
//通讯录的查找
void ContactFind(Contact* con)
{
	//11

	char name[NAME_MAX];
	printf("请输入要查找的联系人姓名\n");
	scanf("%s", name);

	int find = FindName(con, name);
	if (find < 0)
	{
		printf("要查找的联系人数据不存在！\n");
		return;
	}
	// 姓名 性别 年龄 电话  地址
	// 11   11   11   11   11
	printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");
	printf("%3s %3s %3d %3s %3s\n", //手动调整一下格式
		con->arr[find].name,
		con->arr[find].gender,
		con->arr[find].age,
		con->arr[find].tel,
		con->arr[find].addr
	);
}
void ContactShow(Contact* con)
{
	//表头：姓名  性别 年龄 电话  地址
	printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");
	//遍历通讯录，按照格式打印每个联系人数据
	for (int i = 0; i < con->size; i++)
	{
		printf("%3s %3s %3d %3s %3s\n", //手动调整一下格式
			con->arr[i].name,
			con->arr[i].gender,
			con->arr[i].age,
			con->arr[i].tel,
			con->arr[i].addr
		);
	}
}
void SaveContact(Contact* con) {
	FILE* pf = fopen("contact.txt", "wb");
	if (pf == NULL) {
		perror("fopen error!\n");
		return;
	}
	//将通讯录数据写⼊⽂件
	for (int i = 0; i < con->size; i++)
	{
		fwrite(con->arr + i, sizeof(SLDataType), 1, pf);
	}
	printf("通讯录数据保存成功！\n");
}

//通讯录的销毁
void ContactDestroy(Contact* con)
{
	SaveContact(con);
	SLDestroy(con);
}